package com.tool.engine.export.engine;

import com.tool.engine.export.exception.ExportTaskException;
import com.tool.engine.export.output.DataOutputSource;
import com.tool.engine.export.processor.ExportTaskProcessor;
import com.tool.engine.export.task.Task;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;

public interface ExportTaskEngine {
    Future<?> processTask(Task<?> task, ExportTaskProcessor processor, DataOutputSource dataOutPutSource) throws ExportTaskException;

    Future<?> processTask(Task<?> task, ExportTaskProcessor processor, DataOutputSource dataOutPutSource, ExecutorService threadPoolExecutor) throws ExportTaskException;

    void addTask(Task<?> task, String processorName, String outPutType, Object... params) throws ExportTaskException;
}
